// DataLibrary InterfacePlugin Skin - Group

// 識別子：DL_GRP
// 内容  ：

//----------------------------------------------------------------------------//
// Plugin
//----------------------------------------------------------------------------//

//-- プラグインの読み込み処理 --//
DL_LoadSkin_Group:
	Call DL_LoadSkin "Common"  // スキン用の共有サブルーチンを読み込む
Return


//-- プラグインの終了処理 --//
//DL_UnLoadSkin_Group:
//Return


//----------------------------------------------------------------------------//
// HelpText
//----------------------------------------------------------------------------//

//-- ヘルプ用ショートカットキー一覧 --//
DL_HLP_LoadHelpText_Group:
	Call DL_HLP_SetKeyHelp "右クリック" "最初の画面に戻る"
	Call DL_HLP_SetKeyHelp "BackSpace" "最初の画面に戻る"
	Call DL_HLP_SetKeyHelp "ESC" (DL_MainTitle & "を終了します")
	Call DL_HLP_SetKeyHelp "F1" "最初の画面に戻る"
	Call DL_HLP_SetKeyHelp "F2" "ヘルプを開く"
	Call DL_HLP_SetKeyHelp "F3" "コンフィグを開く"
	Call DL_HLP_SetKeyHelp "←" "前のページへ"
	Call DL_HLP_SetKeyHelp "→" "次のページへ"
Return


//----------------------------------------------------------------------------//
// Skin-Group
//----------------------------------------------------------------------------//

//-- SkinAction action_id select_id : アクションに合わせてインターフェースを再描画する --//
DL_GRP_SkinAction:
	Switch Args(1)
	Case "StartInterface"
		// スクロールの準備をする
		Call DL_SetScrollData "Group" "PageB" 10 DL_LibCount[DL_ShowLib]
		
		Call DL_CMN_ChangeFontFace "Group"  // 個別フォント指定を適用する
		Call DL_GRP_DisplayInterface        // インターフェースを表示する
	Case "EndInterface"
		// スクロール情報を削除する
		Call DL_SetScrollData "Group" "Delete"
		
		Call DL_CMN_ClearFontFace "Group"   // 個別フォント指定を解除する
	Case "StartSubInterface"
		Call DL_CMN_ClearFontFace "Group"   // 個別フォント指定を解除する
	Case "EndSubInterface"
		Call DL_CMN_ChangeFontFace "Group"  // 個別フォント指定を再適用する
		Call DL_GRP_DisplayInterface        // インターフェースを表示し直す
	Case "SelectLibrary"
		Call DL_GRP_GroupListAction Args(2) "Select"
		Refresh
	Case "SelectScroll"
		Call DL_CMN_PageControllAciton Args(2) "Select"
		Refresh
	Case "RedrawScroll"
		Call DL_GRP_DisplayInterface
		Refresh
	Case "CancelScroll"
		ClearPicture
		Refresh
	Case "SelectHelp"
		Call DL_CMN_ImageButtonAction "Help" "Select"
		Refresh
	Case "SelectConfig"
		Call DL_CMN_ImageButtonAction "Config" "Select"
		Refresh
	Case "SelectReturn"
		Call DL_CMN_ImageButtonAction "Return" "Select"
		Refresh
	Case "CancelQuit"
		ClearPicture
		Refresh
	EndSw
Return


//-- DisplayInterface : インターフェースを表示する --//
DL_GRP_DisplayInterface:
	Call DL_CMN_ClearDisplay      // 画面を初期化する
	Call DL_CMN_ClearShortcutKey  // ショートカットキーを初期化する
	UnSet DL_CMN_ActionData       // アクションデータを初期化する
	
	// 文字・線の描画方法を保持にする
	Call DL_CMN_SetDrawOption "保持"
	
	// 背景とタイトルを表示する
	Call DL_CMN_Background
	Call DL_CMN_Title DL_GetLibTitle(DL_ShowLib) DL_GetLibIcon(DL_ShowLib)
	
	// グループライブラリリストを表示する
	Local py = 64
	Local group_id color_id i
	For i = DL_ScrollFirst("Group") To DL_ScrollLast("Group")
		Call DL_GRP_GroupList i 40 py 400 24
		Incr py 36
	Next
	
	// スクロールボタンを表示する
	Call DL_CMN_PageControll 166 429 "Group"
	
	// 戻るボタンを表示する
	Call DL_CMN_ImageButton "Return" DL_Image["Return"] 424 8 32 32 _
		IIf(IsVarDefined(DL_SingleMode), "終了する", "戻る") 1
	
	// アイコンを表示する
	Call DL_CMN_ImageButton "Config" DL_Image["IconConfig"] 395 435 24 24 "コンフィグを表示する" 1
	Call DL_CMN_ImageButton "Help" DL_Image["IconHelp"] 430 435 24 24 "ヘルプを表示する" 1
	
	// 文字・線の描画方法を通常にする
	Call DL_CMN_SetDrawOption "通常"
	
	// ショートカットキーを設定する
	Call DL_CMN_SetShortcutKey 2 "Cancel"    // RightClick
	Call DL_CMN_SetShortcutKey 8 "Cancel"    // BS
	Call DL_CMN_SetShortcutKey 27 "Quit"     // ESC
	Call DL_CMN_SetShortcutKey 112 "Index"   // F1
	Call DL_CMN_SetShortcutKey 113 "Help"    // F2
	Call DL_CMN_SetShortcutKey 114 "Config"  // F3
	If DL_GetScrollData("Group", "IsPrev") Then
		Call DL_CMN_SetShortcutKey 37 "Scroll Group -1"  // ←
	EndIf
	If DL_GetScrollData("Group", "IsNext") Then
		Call DL_CMN_SetShortcutKey 39 "Scroll Group +1"  // →
	EndIf
Return


//----------------------------------------------------------------------------//
// Interface Subroutine
//----------------------------------------------------------------------------//

//-- GroupList item_num x y w h : グループ化したライブラリを表示する --//
DL_GRP_GroupList:
	Incr BaseX Args(2)
	Incr BaseY Args(3)
	
	Local width = Args(4)
	Local height = Args(5)
	
	Local group_id = DL_ShowLib & "_" & Args(1)
	Local title = DL_GetLibTitle(group_id)
	Local icon = DL_GetLibIcon(group_id)
	Local color_id = "Point"
	
	// 表示状態を設定する
	If DL_LibCount[group_id] = 0 Then
		color_id = "Disable"
	ElseIf DL_LibUnreadCount[group_id] > 0 Then
		color_id = "Unread"
	EndIf
	
	// アイコンと文字列を表示する
	Font 12pt DL_FontFace["List"]
	Call DL_CMN_Frame 0 0 width height
	If icon != "" Then
		PaintPicture icon 0 (0 - (33 - height)) 32 32 "保持 透過"
		Call DL_CMN_DrawString 37 5 DL_CutString(title, width - 40, "...") color_id
	Else
		Call DL_CMN_DrawString 10 5 DL_CutString(title, width - 15, "...") color_id
	EndIf
	
	// ホットポイントを設置する
	If color_id != "Disable" Then
		Local id = "Library " & Args(1)
		Local caption = DL_GetLibComment(group_id)
		Call DL_CMN_HotPoint id 0 0 width height IIf(caption != "", caption, title)
		
		// アクション実行時に必要な情報を記録しておく
		Set DL_CMN_ActionData[id] List(BaseX, BaseY, width, height, "(" & title & ")", "(" & icon & ")", "(" & caption & ")")
	EndIf
	
	Incr BaseX (Args(2) * -1)
	Incr BaseY (Args(3) * -1)
Return


//-- GroupListAction action_id color_id : グループ化したライブラリを表示する --//
DL_GRP_GroupListAction:
	Local data = DL_CMN_ActionData[Args(1)]
	Local base_pos = List(BaseX, BaseY)
	Set BaseX LIndex(data, 1)
	Set BaseY LIndex(data, 2)
	
	Local width = LIndex(data, 3)
	Local height = LIndex(data, 4)
	Local title = LIndex(data, 5)
	Local icon = LIndex(data, 6)
	
	// アイコンと文字列を表示する
	Font 12pt DL_FontFace["List"]
	Call DL_CMN_Frame 0 0 width height
	If icon != "" Then
		PaintPicture icon 0 (0 - (33 - height)) 32 32 "保持 透過"
		Call DL_CMN_DrawString 37 5 DL_CutString(title, width - 40, "...") Args(2)
	Else
		Call DL_CMN_DrawString 10 5 DL_CutString(title, width - 15, "...") Args(2)
	EndIf
	
	Set BaseX LIndex(base_pos, 1)
	Set BaseY LIndex(base_pos, 2)
Return


